Analisi Fianziaria di Criptovalute¶
Nel contesto economico contemporaneo, le criptovalute sono emerse come una forza trainante, ridefinendo paradigmi finanziari e aprendo nuovi orizzonti nell'ambito degli investimenti.
Una criptovaluta è una forma di valuta digitale basata su crittografia che sfrutta la tecnologia blockchain e algoritmi di consenso distribuito per garantire la sicurezza e la trasparenza delle transazioni all'interno di reti peer-to-peer.
La decentralizzazione, l'anonimato e l'assenza di controllo da parte di istituzioni centrali sono solo alcune delle caratteristiche distintive che hanno catalizzato l'interesse di investitori, sviluppatori e appassionati di tecnologia.
L'accelerazione dell'adozione delle criptovalute ha comportato la creazione di un vasto e dinamico ecosistema, suscitando un crescente interesse anche da parte degli investitori tradizionali. In questo contesto, l'analisi finanziaria delle criptovalute emerge come una disciplina cruciale per comprendere il potenziale e la sostenibilità di queste nuove forme di asset digitali.
0] Analisi del Mercato¶
0.1] Cosa si intende per liquidità in un mercato finanziario?¶
La liquidità di un mercato finanziario si riferisce alla facilità con cui gli investitori possono comprare o vendere titoli finanziari (come azioni, obbligazioni, valute, ecc.) senza causare significative fluttuazioni nei prezzi di mercato. In altre parole, un mercato finanziario è considerato liquido quando gli investitori possono effettuare transazioni con relativa rapidità ed efficienza, con costi di transazione minimi e senza causare impatti significativi sui prezzi degli strumenti finanziari.
Un mercato finanziario altamente liquido è caratterizzato da una maggiore attività di scambio di titoli, un elevato numero di partecipanti, un elevato volume di scambi giornalieri e una stretta differenza tra i prezzi di acquisto (offerta) e i prezzi di vendita (domanda), noti come spread. Al contrario, in un mercato finanziario con scarsa liquidità, può essere difficile acquistare o vendere titoli e ciò può comportare costi di transazione più elevati e prezzi più volatili.
La liquidità è un importante fattore da considerare quando si decide di investire in un mercato finanziario. I mercati altamente liquidi sono generalmente considerati meno rischiosi, poiché gli investitori possono entrare o uscire facilmente dalle posizioni. D'altra parte, i mercati con bassa liquidità possono comportare maggiori rischi e sfide per gli investitori, poiché potrebbe essere difficile convertire i propri investimenti in denaro contante senza influire in modo significativo sui prezzi del mercato.
0.2] Come funziona l'entrata e l'uscita dal mercato delle criptovalute¶
Acquisto di criptovalute:
- Per entrare nel mercato delle criptovalute, bisogna prima acquistare delle criptovalute. Per farlo si passa attraverso piattaforme di scambio (exchange) specializzate, come Binance, Coinbase o Kraken. Queste piattaforme consentono di acquistare criptovalute usando denaro fiat (come dollari o euro) o altre criptovalute.
- Quindi si crea un account su una di queste piattaforme, si completa il processo di verifica dell'identità (KYC) e collegare il proprio conto bancario o utilizzare altri metodi di pagamento accettati.
- Dopo aver finanziato il proprio account, si possono acquistare criptovalute scegliendo tra una vasta gamma di opzioni.
Conservazione delle criptovalute:
- Dopo aver acquistato criptovalute, è importante conservarle in modo sicuro. Questo può essere fatto utilizzando portafogli digitali, che possono essere portafogli online (hot wallet) o portafogli offline (cold wallet). I portafogli offline sono generalmente considerati più sicuri perché non sono esposti a potenziali rischi online.
Negoziazione:
- Una volta che si hanno criptovalute nel proprio portafoglio, si può iniziare a negoziarle sulle piattaforme di scambio. Si possono comprare o vendere criptovalute in base alle tue preferenze e alle condizioni di mercato.
- A differenza dei mercati tradizionali, i mercati delle criptovalute sono attivi 24/7, quindi si può negoziare in qualsiasi momento, anche durante i fine settimana e le festività.
Uscita dal mercato:
- Per uscire dal mercato delle criptovalute, si possono vendere le proprie criptovalute su una piattaforma di scambio e convertirle in denaro fiat o altre criptovalute.
- Dopo la vendita, si possono prelevare i fondi sul tuo conto bancario o utilizzare altre opzioni di prelievo offerte dalla piattaforma di scambio.
0.3] Liquidità del Mercato Crypto¶
Per quanto riguarda la liquidità del mercato delle criptovalute, essa può variare notevolmente da una criptovaluta all'altra e da un momento all'altro.
Le criptovalute più popolari come Bitcoin ed Ethereum tendono ad avere mercati più liquidi, con un alto volume di scambi giornalieri. Tuttavia, le criptovalute meno conosciute o di nicchia possono avere mercati meno liquidi, il che significa che potrebbe essere più difficile acquistare o vendere grandi quantità senza influire significativamente sui prezzi.
In generale, il mercato delle criptovalute è noto per la sua volatilità, il che può comportare fluttuazioni dei prezzi molto rapide e ampie.
1] Estrazione dei Dati¶
I dati sono stati estratti dal sito Yahoo Finance usando delle REST API. I dati sono stati scaricati per quattro criptovalute:
- Ethereum
- Bitcoin
- Dash
- XRP
I dati sono stati scaricati per l'intervallo temporale tra 2018-01-01 e 2023-09-01
Per tenere conto dell'inflazione degli ultimi anni consideriamo una correzione sui prezzi fatta usando il Consumer Price Index (CPI), ottenuto estraendo i dati dal sito della FRED. I dati estratti da quest'ultimo sito sono mensili, mentre i dati scaricati per le criptovalute sono giornalieri. Per rendere i dati omogenei procediamo facendo un'interpolazione lineare del CPI, ottenendo il dato per ogni giorno.
<Figure size 640x480 with 0 Axes>
| Date | CPI | Infation | |
|---|---|---|---|
| 0 | 2018-01-01 | 248.859000 | 0.013664 |
| 1 | 2018-01-02 | 248.880613 | 0.008685 |
| 2 | 2018-01-03 | 248.902226 | 0.008684 |
| 3 | 2018-01-04 | 248.923839 | 0.008683 |
| 4 | 2018-01-05 | 248.945452 | 0.008683 |
| ... | ... | ... | ... |
| 2065 | 2023-08-28 | 307.324613 | 0.012723 |
| 2066 | 2023-08-29 | 307.363710 | 0.012722 |
| 2067 | 2023-08-30 | 307.402806 | 0.012720 |
| 2068 | 2023-08-31 | 307.441903 | 0.012718 |
| 2069 | 2023-09-01 | 307.481000 | 0.012717 |
2070 rows × 3 columns
Ottenuto il dato sull'inflazione andiamo a normalizzare i prezzi ottenendo:
$ NormalizedClose = Close * (1- Inflation)$
| Date | Open | High | Low | Close | Adj Close | Volume | NormalizedClose | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2018-01-01 | 755.757019 | 782.530029 | 742.004028 | 772.640991 | 772.640991 | 2595760128 | 762.083453 |
| 1 | 2018-01-02 | 772.346008 | 914.830017 | 772.346008 | 884.443970 | 884.443970 | 5783349760 | 876.762752 |
| 2 | 2018-01-03 | 886.000000 | 974.471008 | 868.450989 | 962.719971 | 962.719971 | 5093159936 | 954.359668 |
| 3 | 2018-01-04 | 961.713013 | 1045.079956 | 946.085999 | 980.921997 | 980.921997 | 6502859776 | 972.404366 |
| 4 | 2018-01-05 | 975.750000 | 1075.390015 | 956.325012 | 997.719971 | 997.719971 | 6683149824 | 989.057231 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2065 | 2023-08-28 | 1657.439819 | 1659.328735 | 1627.446777 | 1652.457397 | 1652.457397 | 4855588534 | 1631.432731 |
| 2066 | 2023-08-29 | 1652.274170 | 1742.637329 | 1639.576172 | 1729.725708 | 1729.725708 | 11304916729 | 1707.720736 |
| 2067 | 2023-08-30 | 1729.676636 | 1730.564697 | 1697.147217 | 1705.112183 | 1705.112183 | 5023904190 | 1683.423095 |
| 2068 | 2023-08-31 | 1705.364502 | 1720.011963 | 1634.850952 | 1645.639160 | 1645.639160 | 6593153505 | 1624.709233 |
| 2069 | 2023-09-01 | 1645.581299 | 1653.531738 | 1603.034180 | 1628.491211 | 1628.491211 | 6104510092 | 1607.782013 |
2070 rows × 8 columns
2] Analisi del Dataset¶
2.1] Passaggio al Logaritmo¶
Per avere una maggiore stabilità dei valori numerici, passiamo allo studio del logaritmo dei prezzi di chiusura considerandolo come proxy dello studio condotto sui valori originali.
| Date | Open | High | Low | Close | Adj Close | Volume | NormalizedClose | LogClosePrice | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 2018-01-01 | 14112.200195 | 14112.200195 | 13154.700195 | 13657.200195 | 13657.200195 | 10291200000 | 13470.585182 | 4.129386 |
| 1 | 2018-01-02 | 13625.000000 | 15444.599609 | 13163.599609 | 14982.099609 | 14982.099609 | 16846600192 | 14851.983090 | 4.171784 |
| 2 | 2018-01-03 | 14978.200195 | 15572.799805 | 14844.500000 | 15201.000000 | 15201.000000 | 16871900160 | 15068.993839 | 4.178084 |
| 3 | 2018-01-04 | 15270.700195 | 15739.700195 | 14522.200195 | 15599.200195 | 15599.200195 | 21783199744 | 15463.747809 | 4.189315 |
| 4 | 2018-01-05 | 15477.200195 | 17705.199219 | 15202.799805 | 17429.500000 | 17429.500000 | 23840899072 | 17278.167730 | 4.237498 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2065 | 2023-08-28 | 26089.615234 | 26198.578125 | 25880.599609 | 26106.150391 | 26106.150391 | 11002805166 | 25773.994720 | 4.411182 |
| 2066 | 2023-08-29 | 26102.486328 | 28089.337891 | 25912.628906 | 27727.392578 | 27727.392578 | 29368391712 | 27374.654281 | 4.437349 |
| 2067 | 2023-08-30 | 27726.083984 | 27760.160156 | 27069.207031 | 27297.265625 | 27297.265625 | 16343655235 | 26950.043426 | 4.430559 |
| 2068 | 2023-08-31 | 27301.929688 | 27456.078125 | 25752.929688 | 25931.472656 | 25931.472656 | 20181001451 | 25601.665345 | 4.408268 |
| 2069 | 2023-09-01 | 25934.021484 | 26125.869141 | 25362.609375 | 25800.724609 | 25800.724609 | 17202862221 | 25472.621935 | 4.406074 |
2070 rows × 9 columns
<Figure size 640x480 with 0 Axes>
Tracciamo ora gli autocorrelogrammi e gli autocorrelogrammi parziali delle serie dei prezzi logaritmici. Ricordiamo che:
- Gli autocorrelogrammi rappresantono l'influenza del punto $X_0$ al tempo $X_t$ tenendo conto dei tempi $i$ dove $\forall i=1,...,t-1$
- Gli autocorrelogrammi parziali rappresantono l'influenza del punto $X_0$ al tempo $X_t$ NON tenendo conto dei tempi $i$ dove $\forall i=1,...,t-1$
<Figure size 640x480 with 0 Axes>
Come si vede dai grafici:
- Negli autocorelogrammi abbiamo un andamento che tende a scemare nel tempo e questo è dovuto al fatto che l'influenza del punto $X_0$ è sempre più debole con il tempo
- Negli autocorelogrammi parziali abbiamo un picco sul primo punto $X_1$, segno del fatto che l'influenza del punto precedente su quello successivo è alta, ma un'influenza più debole sui punti successivi
2.2] Ricerca di una componenti di Random Walk¶
Cerchiamo una componente di Random Walk all'interno delle serie.
La presenza di una componente di Random Walk nella serie è indice del fatto che il mercato non è prevedibile e che quindi il suo andamento può salire o scendere in modo casuale, ovvero assume valori:
- $up$ con probabilità $p$
- $down$ con probabilità $1-p$
Le componenti di Random Walk vengono ricercate usando due Test di Ipotesi:
- ADF
- KPSS
Nel test di KPSS abbiamo:
- $H_0$ : La serie è stazionaria attorno a una tendenza deterministica (NON ha componente di Random Walk)
- $H_1$ : La serie non è stazionaria (HA componente di Random Walk)
Nel test di ADF abbiamo:
- $H_0$ : La serie ha una radice unitaria (HA componente di Random Walk)
- $H_1$ : La serie non ha una radice unitaria (NON ha componente di Random Walk)
Nel nostro caso vogliamo:
- KPSS, Rigettare
- ADF, Accettare
KPSS ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 4.630432272815153 │ 0.01 │ Reject │ │ BTC-USD │ 4.820559865672976 │ 0.01 │ Reject │ │ DASH-USD │ 2.7531299544913352 │ 0.01 │ Reject │ │ XRP-USD │ 0.918683154822733 │ 0.01 │ Reject │ └──────────┴────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -0.9501313424178288 │ 0.7710157360162664 │ Accept │ │ BTC-USD │ -0.978510604401754 │ 0.7610211585021541 │ Accept │ │ DASH-USD │ -2.8180938650045064 │ 0.0557353087206187 │ Accept │ │ XRP-USD │ -3.500868599705032 │ 0.007964814582617451 │ Reject │ └──────────┴─────────────────────┴──────────────────────┴─────────┘
Dai test condotti si vede che tutte le serie hanno natura di Random Walk, fatta eccezione per l'ultima che non passa il test ADF. Tuttavia, passando il test KPSS ed essendo il valore del pValue abbastanza vicino al limite possiamo concludere che il trend stocastico sia presente anche per la crypto XRP-USD ma che sia un trend debole.
2.3] Differencing della serie storica e analisi del rumore¶
Procediamo lo studio con l'analisi del rumore.
Passiamo al differencing della serie storica, ottenendo $Y_{t+1} - Y_{t} = W_{t}$ e procedendo con un'analisi del termine $W_{t}$.
Il differencing viene fatto sul risultato del passaggio al logaritmo dei valori originari. Siano:
- Y, valori logaritmici
- P, valori originari
- R, rendimento
Fare il differencing dei valori logaritmici ci permette di fare quanto segue:
$Y_{t+1} - Y_{t} = \log(P_{t+1}) - \log(P_t) = \log(\frac{P_{t+1}}{P_{t}}) = \log(R) = W_t$
Ovvero analizzare se il rendimento ha o meno natura di White Noise, controllando:
- Stazionarietà
- Eteroschedasticità
- Autocorrelazione
- Gaussianità
<Figure size 640x480 with 0 Axes>
Dai grafici sull'andamento notiamo clustering di volatilità e questo ci fa supporre presenza di autocorrelazione.
2.3.1] Analisi Stazionarietà¶
Per l'analisi di stazionarietà eseguiamo due test:
- KPSS
- ADF
Nel test di KPSS abbiamo:
- $H_0$ : La serie è stazionaria attorno a una tendenza deterministica
- $H_1$ : La serie non è stazionaria
Nel test di Adfuller abbiamo:
- $H_0$ : La serie ha una radice unitaria
- $H_1$ : La serie non ha una radice unitaria
Nel caso di white noise si avrebbe:
- KPSS, Accettare
- ADF, Rigettare
KPSS ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.23201574524870314 │ 0.1 │ Accept │ │ BTC-USD │ 0.15674142996559834 │ 0.1 │ Accept │ │ DASH-USD │ 0.13769918829263092 │ 0.1 │ Accept │ │ XRP-USD │ 0.19808342863898767 │ 0.1 │ Accept │ └──────────┴─────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -13.748813873133498 │ 1.0600349812346284e-25 │ Reject │ │ BTC-USD │ -31.470467916876196 │ 0.0 │ Reject │ │ DASH-USD │ -21.645263875919735 │ 0.0 │ Reject │ │ XRP-USD │ -46.79501030099321 │ 0.0 │ Reject │ └──────────┴─────────────────────┴────────────────────────┴─────────┘
Dal test di KPSS e dal test ADF, possiamo concludere che il differencing $W_t$ è stazionario
2.3.2] Analisi Eteroschedasticità¶
Per l'analisi di eteroschedasticità eseguiamo i seguenti test:
- Breusch-Pagan
- White
Nel test di Breusch-Pagan abbiamo:
- $H_0$: I residui sono distribuiti con varianza omogenea (La serie è Omoschedastica)
- $H_1$: I residui NON sono distribuiti con varianza omogenea (La serie NON è omoschedastica)
Nel test di White abbiamo:
- $H_0$: La varianza dei residui è costante (La serie è Omoschedastica)
- $H_1$: La varianza dei residui NON è costante (La serie NON è Omoschedastica)
Nel caso di white noise si avrebbe:
- Breusch-Pagan, Accettare
- White, Accettare
Breusch-Pagan ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 8.567367566736669 │ 0.0034597918568196914 │ Reject │ │ BTC-USD │ 7.763759935805086 │ 0.005379165131515243 │ Reject │ │ DASH-USD │ 2.276765009171112 │ 0.1314783730532143 │ Accept │ │ XRP-USD │ 1.2467607341644058 │ 0.2643018406639988 │ Accept │ └──────────┴────────────────────┴───────────────────────┴─────────┘
White ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 5.26508181913567 │ 0.005238555530471663 │ Reject │ │ BTC-USD │ 4.141400487811925 │ 0.016032762971599328 │ Reject │ │ DASH-USD │ 3.666072606577798 │ 0.025743255972081297 │ Reject │ │ XRP-USD │ 0.7598677076192619 │ 0.4678589731665155 │ Accept │ └──────────┴────────────────────┴──────────────────────┴─────────┘
Notiamo che XRP-USD è l'unica delle Crypto per cui il test passa: analizzando il grafico possiamo notare come ci sia una certa costanza nella volatilità della serie, quindi anche graficamente abbiamo una conferma del risultato.
Per le altre crypto invece abbiamo che, trattandosi di serie abbastanza lunghe, è ragionevole che la varianza non sia costante.
2.3.3] Analisi Autocorrelazione¶
Per l'Autocorrelazione consideriamo i seguenti test:
- Ljung-Box
Per il test Ljung-Box:
- $H_0$: Non c'è autocorrelazione nei dati. In altre parole, i residui sono indipendenti l'uno dall'altro e non mostrano alcuna struttura di autocorrelazione significativa.
- $H_1$: I residui non sono indipendenti e mostrano una struttura di autocorrelazione significativa.
Nel caso di white noise si avrebbe:
- Ljung-Box, Accettare
Ljung-Box ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 31.609722534078987 │ 0.0004650065716092994 │ Reject │ │ BTC-USD │ 16.925034452734113 │ 0.07603932218108504 │ Accept │ │ DASH-USD │ 15.716773963771859 │ 0.10803220218423684 │ Accept │ │ XRP-USD │ 7.977674132723926 │ 0.631017790629593 │ Accept │ └──────────┴────────────────────┴───────────────────────┴─────────┘
Il test quindi Accetta e i dati non dovrebbero quindi essere autocorrelati. Questo và in contraddizione con ciò che avevamo dedotto osservando i grafici relativi al differencing, in cui sembravano essere presenti dei cluster di varianza costante, in cui a basse [risp: alte] varianze seguono zone di bassa [risp: alta] varianza.
Andiamo per completezza a vedere gli autocorrelogrammi e gli autocorrelogrammi parziali dei dati di differencing.
<Figure size 640x480 with 0 Axes>
Riassumendo abbiamo:
- Accettazione del test di Ljung-Box
- Evidenza grafica di clusterizzazione delle varianze
Questo fenomeno potrebbe essere dovuto al fatto che i dati sono molti, e quindi il grande numero di dati potrebbe offuscare l'autocorrelazione portando i dati a tendere al gaussiano... Ci fa supporre la presenza di punti di rottura nella struttura!
Passiamo quindi, dopo dei veloci test sulla gaussianità, all'analisi delle rotture strutturali.
2.3.4] Analisi Normalità¶
Per l'analisi di normalità eseguiamo i seguenti test:
- Shapiro-Wilk
- Kolmogorov-Smirnov
Nel test di Shapiro-Wilk abbiamo:
- $H_0$: I dati seguono una distribuzione normale
- $H_1$: I dati NON seguono una distribuzione normale
Nel test di Kolmogorov-Smirnov abbiamo:
- $H_0$: I dati seguono la distribuzione specificata
- $H_1$: I dati NON seguono la distribuzione specificata
Nel caso di white noise:
- Shapiro-Wilk, Accettare
- Kolmogorov-Smirnov, Accettare
Shapiro-Wilk ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.9225029349327087 │ 2.243272511905845e-31 │ Reject │ │ BTC-USD │ 0.9065624475479126 │ 7.687562699532387e-34 │ Reject │ │ DASH-USD │ 0.9040272235870361 │ 3.3494620980164206e-34 │ Reject │ │ XRP-USD │ 0.8357081413269043 │ 7.15923385423549e-42 │ Reject │ └──────────┴────────────────────┴────────────────────────┴─────────┘
Kolmogorov-Smirnov ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.4705378122861261 │ 0.0 │ Reject │ │ BTC-USD │ 0.47608764853183083 │ 0.0 │ Reject │ │ DASH-USD │ 0.46608875744466827 │ 0.0 │ Reject │ │ XRP-USD │ 0.4642030732172747 │ 0.0 │ Reject │ └──────────┴─────────────────────┴────────┴─────────┘
Notiamo quindi che i due test ci fanno rigettare in entrambi i casi l'ipotesi nulla di normalità dei dati.
2.4] Analisi dei Punti di Rottura nella Struttura¶
Cerchiamo i punti di rottura usando le funzioni di R:
- breakpoints
- fstats
- supMZ
I test rilevano la presenza dei seguenti punti di rottura, come sospettavamo...
Structural Breakpoints ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ Breakpoint ┃ FStats ┃ SupMZ ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ | 2018-11-06 | 2020-02-06 | 2021-01-02 | 2022-05-10 | │ | 2020-12-29 | │ | 2021-01-04 | │ │ BTC-USD │ | 2019-05-12 | 2020-12-15 | 2022-05-08 | │ | 2020-11-11 | │ | 2020-11-06 | │ │ DASH-USD │ | 2018-11-06 | 2019-09-22 | 2021-01-09 | 2022-05-04 | │ | 2018-11-07 | │ | 2022-05-12 | │ │ XRP-USD │ | 2018-11-18 | 2019-09-24 | 2021-02-08 | 2022-04-28 | │ | 2021-02-08 | │ | 2021-02-05 | │ └──────────┴────────────────────────────────────────────────────────┴─────────────────┴─────────────────┘
<Figure size 640x480 with 0 Axes>
<Figure size 640x480 with 0 Axes>
Notiamo che test diversi rilevano punti di rottura simili: scegliamo quindi di procedere con un "voto a maggioranza", prendendo il punto di rottura più simile tra i tre test e considerando i dati a partire da tale punto in poi.
3] Divisione del dataset¶
Dividiamo inoltre il dataset ristretto per ogni crypto in due parti, training e test set: manteniamo nel training circa il 90% dei dati di ogni strumento.
<Figure size 640x480 with 0 Axes>
4] Analisi dei dati ristretti¶
Consideriamo ora solamente i dati di training, per ogni crypto, sul dataset ristretto all'ultimo punto di rottura.
4.1] Analisi del differencing ridotto¶
Come nel primo caso analizziamo il differencing e vediamo se questo ha natura di white noise.
4.1.1] Analisi Stazionarietà¶
Per l'analisi di stazionarietà eseguiamo due test:
- KPSS
- ADF
Nel test di KPSS abbiamo:
- $H_0$ : La serie è stazionaria attorno a una tendenza deterministica
- $H_1$ : La serie non è stazionaria
Nel test di Adfuller abbiamo:
- $H_0$ : La serie ha una radice unitaria
- $H_1$ : La serie non ha una radice unitaria
Nel caso di white noise si avrebbe:
- KPSS, Accettare
- ADF, Rigettare
KPSS ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.30402339982507376 │ 0.1 │ Accept │ │ BTC-USD │ 0.26793706713609056 │ 0.1 │ Accept │ │ DASH-USD │ 0.14448487432870857 │ 0.1 │ Accept │ │ XRP-USD │ 0.10857489114721602 │ 0.1 │ Accept │ └──────────┴─────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -31.463043189797844 │ 0.0 │ Reject │ │ BTC-USD │ -30.483765580661746 │ 0.0 │ Reject │ │ DASH-USD │ -15.051422863190458 │ 9.281783031352217e-28 │ Reject │ │ XRP-USD │ -31.024464015415518 │ 0.0 │ Reject │ └──────────┴─────────────────────┴───────────────────────┴─────────┘
4.1.2] Analisi Eteroschedasticità¶
Per l'analisi di eteroschedasticità eseguiamo i seguenti test:
- Breusch-Pagan
- White
Nel test di Breusch-Pagan abbiamo:
- $H_0$: I residui sono distribuiti con varianza omogenea (La serie è Omoschedastica)
- $H_1$: I residui NON sono distribuiti con varianza omogenea (La serie NON è omoschedastica)
Nel test di White abbiamo:
- $H_0$: La varianza dei residui è costante (La serie è Omoschedastica)
- $H_1$: La varianza dei residui NON è costante (La serie NON è Omoschedastica)
Nel caso di white noise si avrebbe:
- Breusch-Pagan, Accettare
- White, Accettare
Breusch-Pagan ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 25.05566267671057 │ 6.737702332420841e-07 │ Reject │ │ BTC-USD │ 25.84501763683427 │ 4.5114279068198483e-07 │ Reject │ │ DASH-USD │ 2.495168564366106 │ 0.11492299248948996 │ Accept │ │ XRP-USD │ 34.8344311264828 │ 5.204886672228533e-09 │ Reject │ └──────────┴───────────────────┴────────────────────────┴─────────┘
White ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 13.1651660977433 │ 2.32843202022156e-06 │ Reject │ │ BTC-USD │ 13.22301453319326 │ 2.193663541133534e-06 │ Reject │ │ DASH-USD │ 3.299977334208391 │ 0.037811687468737934 │ Reject │ │ XRP-USD │ 23.00017453495107 │ 1.885248700990853e-10 │ Reject │ └──────────┴───────────────────┴───────────────────────┴─────────┘
4.1.3] Analisi Autocorrelazione¶
Per l'Autocorrelazione consideriamo i seguenti test:
- Ljung-Box
Per il test Ljung-Box:
- $H_0$: Non c'è autocorrelazione nei dati. In altre parole, i residui sono indipendenti l'uno dall'altro e non mostrano alcuna struttura di autocorrelazione significativa.
- $H_1$: I residui non sono indipendenti e mostrano una struttura di autocorrelazione significativa.
Nel caso di white noise si avrebbe:
- Ljung-Box, Accettare
Ljung-Box ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 20.74439638246904 │ 0.022948121087501706 │ Reject │ │ BTC-USD │ 12.632829754955273 │ 0.24493117060834974 │ Accept │ │ DASH-USD │ 9.348220225953458 │ 0.49940562393741117 │ Accept │ │ XRP-USD │ 16.883011215521183 │ 0.07699305871115295 │ Accept │ └──────────┴────────────────────┴──────────────────────┴─────────┘
<Figure size 640x480 with 0 Axes>
Nonostante la restrizione del dataset dai risultati del test di Lijung-Box e gli autocorrelogrammi sembra proprio che tra i rendimenti delle criptovalute la correlazione seriale sia abbastanza scarsa.
Questo risultato è abbastanza deludente in termini di strategie di trading basate sulla "compra-vendita" più o meno intelligente dei titoli. A questo punto non ci resta che esaminare l'eventuale correlazione sui quadrati dei rendimenti.
5] Quadratic autocorrelation¶
L'analisi sulla correlazione dei quadrati risulta a questo punto necessaria poiché, ricordando che:
$D^{2}[X_t] = E[X_t^{2}] + E^{2}[X_t]$
Se la media fosse nulla quindi la varianza dei rendimenti corrisponderebbe con il quadrato dei rendimenti stessi:
$D^{2}[X_t] = E[X_t^{2}]$
Zero Mean Test ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ ┃ Crypto ┃ T-Statistic ┃ P-Value ┃ Result ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ │ ETH-USD │ 0.33808066325759595 │ 0.7353367184851297 │ Accept │ │ BTC-USD │ 0.3725821323911949 │ 0.7094976528285228 │ Accept │ │ DASH-USD │ -1.459006273766798 │ 0.14471524793122822 │ Accept │ │ XRP-USD │ -0.5918757465602607 │ 0.5539984936921993 │ Accept │ └──────────┴─────────────────────┴─────────────────────┴────────┘
Per nessuno degli strumenti finanziari possiamo rigettare l'ipotesi nulla di media nulla al 95%.
Procediamo quindi con l'analisi dei rendimenti logaritmici quadrati che, qualora risultassero autocorrelati, potrebbero essere modellati con dei modelli GARCH.
<Figure size 640x480 with 0 Axes>
Dall'evidenza grafica sembrerebbe esserci un effetto clustering abbastanza marcato. Per averne conferma procediamo con un test di Ljung-Box sui dati quadratici.
Ljung-Box ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 107.45662340504884 │ 1.7362744278257656e-18 │ Reject │ │ BTC-USD │ 28.435878927917237 │ 0.0015366636984585028 │ Reject │ │ DASH-USD │ 20.296369471575147 │ 0.026570915198950266 │ Reject │ │ XRP-USD │ 124.35893071112875 │ 6.585066550321394e-22 │ Reject │ └──────────┴────────────────────┴────────────────────────┴─────────┘
Dai risultati si evince infatti che per tutte le monete si può rigettare l'ipotesi nulla di non-autocorrelazione, concludiamo quindi che tutte le monete presentano autocorrelazione.
Procediamo poi per completezza a graficare gli autocorrelogrammi per le varie monete.
<Figure size 640x480 with 0 Axes>
6] Analisi con modello GARCH¶
Come già detto, essendo presente autocorrelazione nella volatilità dei rendimenti, possiamo procedere a modellare tramite Generalized ARCH model (GARCH).
In genere, solo parametrizzazioni ARCH piuttosto ricche sono in grado di misurare adeguatamente le serie finanziarie. Tuttavia, i modelli ampiamente parametrizzati possono essere instabili nella previsione e difficili da stimare.
Per superare le carenze del modello ARCH, nel 1986 Tim Bollerslev ha proposto una generalizzazione del modello ARCH chiamata GARCH model. Il modello consente di valutare adeguatamente i rendimenti finanziari mantenendo però un numero ridotto di parametri.
Nella pratica, il modello GARCH è uno dei modelli di volatilità più utilizzati con successo.
Fittando il modello GARCH(1,1) per ogni cryptovaluta, otteniamo i seguenti parametri di modello.
GARCH models parameters ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ alpha_0 ┃ alpha_1 ┃ beta_1 ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 8.76217244982038e-06 │ 0.09991210016705068 │ 0.8801005312804235 │ │ BTC-USD │ 5.27417398334347e-06 │ 0.0499931225074402 │ 0.9298499390118588 │ │ DASH-USD │ 5.795185708522076e-05 │ 0.10761903431571908 │ 0.7379445393229688 │ │ XRP-USD │ 1.5061776323395724e-05 │ 0.10021435919806294 │ 0.8785064342363201 │ └──────────┴────────────────────────┴─────────────────────┴────────────────────┘
Prima di procedere con la costruzione delle bande di predizione, cerchiamo di valutare la bontà del modello attraverso un'analisi dei residui.
Per prima cosa ne valutiamo la $Stazionarietà$ attraverso i test KPSS e ADF. In particolare un buon modello dovrebbe presentare residui stazionari.
KPSS ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.17432400371354975 │ 0.1 │ Accept │ │ BTC-USD │ 0.19844539579445133 │ 0.1 │ Accept │ │ DASH-USD │ 0.11788575359356059 │ 0.1 │ Accept │ │ XRP-USD │ 0.10803807541946762 │ 0.1 │ Accept │ └──────────┴─────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -15.693567424856559 │ 1.4241061163949666e-28 │ Reject │ │ BTC-USD │ -29.079199700789154 │ 0.0 │ Reject │ │ DASH-USD │ -20.551692589739947 │ 0.0 │ Reject │ │ XRP-USD │ -30.272866468250122 │ 0.0 │ Reject │ └──────────┴─────────────────────┴────────────────────────┴─────────┘
Una volta stabilita la stazionarietà procediamo valutandone l'$Autocorrelazione$ con il test di Ljung-Box. In particolare un buon modello dovrebbe mostrare residui scorrelati.
Ljung-Box ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 12.429167305858956 │ 0.2573598822424017 │ Accept │ │ BTC-USD │ 11.049385706036809 │ 0.35368336960583363 │ Accept │ │ DASH-USD │ 7.738434333520586 │ 0.6543690599625923 │ Accept │ │ XRP-USD │ 13.16396100965736 │ 0.21464853827574287 │ Accept │ └──────────┴────────────────────┴─────────────────────┴─────────┘
Andiamo a produrre degli autocorrelogrammi per averne anche evidenza grafica.
<Figure size 640x480 with 0 Axes>
Avendo avuto conferma di trovarci davanti a residui scorrelati, possiamo infine procedere ad un'analisi dell'$Eteroschedasticità$ attraverso i test di Breusch-Pagan e White. In particolare un buon modello non dovrebbe presentare residui molto eteroschedastici.
Breusch-Pagan ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 3.0552372793185714 │ 0.0808291850355068 │ Accept │ │ BTC-USD │ 4.81037750869296 │ 0.028547494279450508 │ Reject │ │ DASH-USD │ 0.16268201483311248 │ 0.6868977927761047 │ Accept │ │ XRP-USD │ 6.365618133810369 │ 0.011819036032203746 │ Reject │ └──────────┴─────────────────────┴──────────────────────┴─────────┘
White ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 2.1579503833990525 │ 0.11617918995361964 │ Accept │ │ BTC-USD │ 2.5589215991266947 │ 0.07795936137356213 │ Accept │ │ DASH-USD │ 1.432578207289038 │ 0.2398217511979006 │ Accept │ │ XRP-USD │ 3.4750426643481562 │ 0.031407409545298644 │ Reject │ └──────────┴────────────────────┴──────────────────────┴─────────┘
Qui in alcuni casi si ha una lieve eteroschedasticità ma non essendo eccessivamente marcata possiamo comunque concludere che il modello è adeguato e procedere con la trattazione.
Grafichiamo quindi i residui ottenuti.
<Figure size 1600x900 with 0 Axes>
<Figure size 640x480 with 0 Axes>
6.1] Approccio non parametrico (Tecnica di Bootstrap)¶
Con l'obiettivo di generare delle bande di predizione in cui ci aspettiamo che ricada il nostro testing set andiamo ad applicare la tecnica di Bootstrap. Questa tecnica, che sembra empiricamente funzionare discretamente bene, è molto facile e veloce rispetto ad un tradizionale approccio parametrico ma non dà informazioni complete sul processo generatore della serie dei residui.
Procediamo quindi con i seguenti passi per ogni cryptovaluta:
- Fit del modello GARCH(1,1) sul trainingSet dei rendimenti
- Estrazione dei parametri del modello ($\alpha_0$, $\alpha_1$, $\beta_1$)
- Tecnica di Bootstrap:
- Estrazione di TESTING_SET_LEN samples con rimpiazzamento dai residui del modello
- Generazione di 10000 traiettorie:
$\sigma^2_t = \alpha_0 + \alpha_1 X_{t-1}^2 + \beta_1 \sigma_{t-1}^2$
$X_t = \sigma_t W_t$
$\forall t = 1,...,testSetLen$
Dove $\sigma_0, X_0 = lastTrainingSetPoint$
<Figure size 640x480 with 0 Axes>
Partendo dalle traiettorie generate, andiamo a calcolare i quantili empirici per ogni t e costruiamo le nostre bande di predizione al 10% e 90%.
Grafichiamo poi il tutto sui dati di testing effettivi.
<Figure size 640x480 with 0 Axes>
Calcoliamo ora la percentuale di punti che ricade nelle bande di predizione generate.
TestingSet captured by interval - Bootstrap ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ % of Points ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 88.65979381443299 │ │ BTC-USD │ 83.83838383838383 │ │ DASH-USD │ 89.58333333333334 │ │ XRP-USD │ 83.87096774193549 │ └──────────┴───────────────────┘
6.2] Approccio Parametrico¶
Non avendo informazioni sul processo generatore dei residui e non potendo quindi fare delle conclusioni di carattere statistico con il solo approccio di Bootstrap, approfondiamo la trattazione considerando un approccio parametrico.
Per l'approccio parametrico abbiamo due ipotesi sulla distribuzione dei residui:
- Skewed Student
- Generalized Logistic
Andiamo quindi a vedere quale tra le due, per ogni crypto, cattura meglio i residui del modello GARCH.
6.2.1] Ricerca della distribuzione¶
Skewed T Student Params ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ Location ┃ Scale ┃ Gamma ┃ Degrees of Freedom ┃ LogLikelihood ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 0.252536912233459… │ 0.7931626273828345 │ -0.3228989079727… │ 4.769267887102352 │ -1204.1528851052… │ │ BTC-USD │ 0.001702114020373… │ 0.6790751453997663 │ 0.01147859718582… │ 3.3067892720438783 │ -1203.4957732999… │ │ DASH-USD │ 0.3905158781548028 │ 0.7879525603521891 │ -0.6704196131287… │ 3.9902423864795264 │ -585.71440125403… │ │ XRP-USD │ 0.058080550672878… │ 0.6604521091349947 │ -0.1087986200691… │ 3.3914213261598682 │ -1103.9276325024… │ └──────────┴────────────────────┴────────────────────┴───────────────────┴────────────────────┴───────────────────┘
Generalized Logistic Params ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ Location ┃ Scale ┃ Shape ┃ LogLikelihood ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 0.23732458830417807 │ 0.48083967720439225 │ 0.7640744756521249 │ -1205.3666488127258 │ │ BTC-USD │ 0.125861732368985 │ 0.4894503257669105 │ 0.8525401171276977 │ -1214.435506980533 │ │ DASH-USD │ 0.3405336970501534 │ 0.41752163539790144 │ 0.6042602656979353 │ -587.6248517903006 │ │ XRP-USD │ 0.1149358907546211 │ 0.4703252736043755 │ 0.8395420047125439 │ -1121.7298065866314 │ └──────────┴─────────────────────┴─────────────────────┴────────────────────┴─────────────────────┘
Analizziamo gli intervalli di confidenza al 95% dei diversi parametri sia della Skewed Student che della Generalized Logistic
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.252537 | 0.243195 | -0.032199 | 0.538824 |
| 1 | Scale | 0.793163 | 0.796474 | 0.719469 | 0.918600 |
| 2 | Gamma | -0.322899 | -0.320639 | -0.797486 | 0.103675 |
| 3 | DegreesOfFreedom | 4.769268 | 4.823272 | 3.656460 | 6.752851 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.001702 | 0.003475 | -0.193667 | 0.200306 |
| 1 | Scale | 0.679075 | 0.682814 | 0.624653 | 0.748171 |
| 2 | Gamma | 0.011479 | 0.011300 | -0.329821 | 0.335654 |
| 3 | DegreesOfFreedom | 3.306789 | 3.323512 | 2.672073 | 4.268613 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.390516 | 0.398278 | 0.068063 | 0.646541 |
| 1 | Scale | 0.787953 | 0.790151 | 0.659952 | 0.978766 |
| 2 | Gamma | -0.670420 | -0.689939 | -1.312804 | -0.087226 |
| 3 | DegreesOfFreedom | 3.990242 | 4.110123 | 3.013906 | 7.240064 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.058081 | 0.053644 | -0.143542 | 0.256487 |
| 1 | Scale | 0.660452 | 0.669490 | 0.611773 | 0.734713 |
| 2 | Gamma | -0.108799 | -0.103286 | -0.449907 | 0.233464 |
| 3 | DegreesOfFreedom | 3.391421 | 3.392318 | 2.782126 | 4.556459 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.237325 | 0.230020 | 0.053796 | 0.385777 |
| 1 | Scale | 0.480840 | 0.480408 | 0.432054 | 0.531697 |
| 2 | Shape | 0.764074 | 0.768170 | 0.618254 | 0.944869 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.125862 | 0.121088 | -0.086755 | 0.281922 |
| 1 | Scale | 0.489450 | 0.488217 | 0.438309 | 0.547313 |
| 2 | Shape | 0.852540 | 0.853113 | 0.686918 | 1.117008 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.340534 | 0.338337 | 0.100249 | 0.522810 |
| 1 | Scale | 0.417522 | 0.415992 | 0.354386 | 0.479750 |
| 2 | Shape | 0.604260 | 0.604224 | 0.456733 | 0.826567 |
| ParamName | EstimatedValue | BootstrapValue | FirstBoundary | LastBoundary | |
|---|---|---|---|---|---|
| 0 | Location | 0.114936 | 0.116186 | -0.084587 | 0.285080 |
| 1 | Scale | 0.470325 | 0.469583 | 0.419737 | 0.523219 |
| 2 | Shape | 0.839542 | 0.839841 | 0.668796 | 1.080622 |
Vediamo l'andamento delle due distribuzioni rispetto ai residui con:
- Istogrammi a confronto
- QQ-Plot
<Figure size 640x480 with 0 Axes>
Procediamo quindi a selezionare la distribuzione che restituisce il valore massimo di Log-Likelihood".
Best Guessed Distribution for crypto ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ Skewed Student Log-Likelihood ┃ Generalized Logistic Log-Likelihood ┃ Chosen Distribution ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ -1204.1528851052553 │ -1205.3666488127258 │ Skewed Student │ │ BTC-USD │ -1203.4957732999053 │ -1214.435506980533 │ Skewed Student │ │ DASH-USD │ -585.7144012540351 │ -587.6248517903006 │ Skewed Student │ │ XRP-USD │ -1103.9276325024002 │ -1121.7298065866314 │ Skewed Student │ └──────────┴───────────────────────────────┴─────────────────────────────────────┴─────────────────────┘
La skewed student si rivela essere la distribuzione che in tutti i casi cattura meglio il comportamento dei residui del modello GARCH.
Questo significa che, essendo una Student, gli eventi rari sono più frequenti rispetto a quanto non lo siano invece in una Normale.
Gamma for Skewed Student ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ Gamma ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ -0.3228989079727239 │ │ BTC-USD │ 0.01147859718582429 │ │ DASH-USD │ -0.6704196131287173 │ │ XRP-USD │ -0.1087986200691051 │ └──────────┴─────────────────────┘
Come si vede dai valori, il gamma risulta negativo per tutte le crypto ad eccezione di Bitcoin.
La negatività di questo parametro implica che gli eventi "negativi" siano più frequenti di quelli positivi e che quindi gli investitori reagiscano peggio ad eventi negativi piuttosto che meglio ad eventi positivi (e viceversa).
Per quanto riguarda BTC-USD possiamo notare come il valore sia molto piccolo (oltre che positivo): notando che $0$ è incluso nell'intervallo di confidenza al $95\%$ possiamo anche supporre che questo valore sia nullo e che quindi i residui nella realtà seguano una Student-T non Skewed
6.2.2] Generazione delle bande di predizione¶
Procediamo, dopo aver calcolato la miglior distribuzione per i residui, al calcolo di traiettorie come nell'approccio non parametrico.
A differenza del caso precedente, non facciamo delle estrazioni con reinserimento dall'insieme dei residui, ma generiamo dei valori partendo dalla distribuzione stimata.
<Figure size 640x480 with 0 Axes>
<Figure size 640x480 with 0 Axes>
Calcoliamo anche in questo caso la percentuale di punti che ricade nelle bande di predizione generate.
TestingSet captured by interval - Parametric Approach ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ % of Points ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 91.75257731958763 │ │ BTC-USD │ 92.92929292929293 │ │ DASH-USD │ 83.33333333333334 │ │ XRP-USD │ 83.87096774193549 │ └──────────┴───────────────────┘
6.2.4] Metriche di Accuratezza¶
Per valutare il modello usato, consideriamo le seguenti metriche di accuratezza:
Scale-Dependent Metrics
- $\LARGE \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| $
Indica l'errore medio assoluto tra le previsioni e i valori reali. Un valore basso è preferibile, poiché indica una buona adattabilità del modello ai dati.
- $\LARGE \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $
Misura la deviazione quadratica media tra le previsioni e i valori reali. Si eleva al quadrato gli errori, enfatizzando gli errori più grandi. È sensibile agli outlier. Un MSE più basso è migliore, indicando una migliore precisione.
- $\LARGE \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| $
Scale Free Metrics
- $\LARGE \text{MASE} = \frac{MAE}{\frac{1}{m-1} \sum_{j=2}^{m} |y_j - y_{j-1}|} $
Valuta la capacità predittiva del modello rispetto a un modello naïve dove le previsioni sono basate sul valore precedente. Un valore inferiore a 1 indica che il modello è migliore del modello naïve.
- $\LARGE \text{RMSSE} = \sqrt{\frac{MSE}{\frac{1}{m-1} \sum_{j=2}^{m} (y_j - y_{j-1})^2}} $
È una versione scalata di MSE, che considera anche il confronto con un modello di benchmark (ad esempio, il modello naïve). Un valore inferiore a 1 indica una migliore performance rispetto al modello di riferimento.
- $\LARGE \text{MASE} = \frac{MAE}{\frac{1}{m-1} \sum_{j=2}^{m} |y_j - y_{j-1}|} $
Scale dependent Metrics ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ MAE ┃ MSE ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 0.00631040687818553 │ 1.1805823471175029e-05 │ │ BTC-USD │ 0.005668715012765018 │ 1.1472455007084417e-05 │ │ DASH-USD │ 0.00852420464572344 │ 9.113228816304299e-06 │ │ XRP-USD │ 0.011707208114645536 │ 1.7493349984090394e-05 │ └──────────┴──────────────────────┴────────────────────────┘
Per quanto riguarda le metriche $Scale$ $Dependent$ abbiamo un risultato piuttosto soddisfacente. In particolare su MSE abbiamo dei valori molto più piccoli di $1$ e questo può essere dovuto al fatto che nella scelta del valore predetto è stata considerata la mediana dei valori assunti dalle traiettorie generate, che ha eliminato gli outlier.
Scale Free Error Metrics ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ MASE ┃ RMSSE ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 1.1805823471175029e-05 │ 3.363031017370534e-06 │ │ BTC-USD │ 1.1472455007084417e-05 │ 4.516776079722822e-06 │ │ DASH-USD │ 9.113228816304299e-06 │ 2.049551620136622e-06 │ │ XRP-USD │ 1.7493349984090394e-05 │ 4.05952979224054e-06 │ └──────────┴────────────────────────┴───────────────────────┘
Passando alle metriche $Scale$ $Free$ $Error$ otteniamo per entrambe un valore molto inferiore ad $1$ confermando quindi che il modello è di gran lunga migliore del modello naïve dove le previsioni sono basate sul valore precedente.
6.3] Approccio Parametrico VS Approccio Non Parametrico¶
Confrontiamo per concludere i due approcci.
TestingSet captured by interval - Comparison ┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ % of Points - Param ┃ % of Points - Non Param ┃ ┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 91.75257731958763 │ 88.65979381443299 │ │ BTC-USD │ 92.92929292929293 │ 83.83838383838383 │ │ DASH-USD │ 83.33333333333334 │ 89.58333333333334 │ │ XRP-USD │ 83.87096774193549 │ 83.87096774193549 │ └──────────┴─────────────────────┴─────────────────────────┘
Come si vede l'approccio parametrico migliora di molto il numero di punti del testing set catturati dalle bande di predizione per ETH e BTC, mentre rimane uguale per XRP e addirittura peggiora per DASH, indice del fatto che per queste due crypto la distribuzione dei residui potrebbe essere diversa.
7] Analisi ETH-USD con ARIMA-GARCH¶
Notiamo che per la cryptovaluta ETH-USD, secondo il test di Ljiung-Box, è presente autocorrelazione nel differencing. Possiamo procedere in questo caso ad un'analisi con modello ARIMA-GARCH.
Cerchiamo i parametri (p,q) migliori per il modello ARIMA; in particolare li cerchiamo nell'intervallo:
- $p \in [0,7]$
- $q \in [0,7]$
| Dep. Variable: | Diff | No. Observations: | 875 |
|---|---|---|---|
| Model: | ARIMA(7, 0, 5) | Log Likelihood | 2154.974 |
| Date: | Wed, 20 Dec 2023 | AIC | -4281.949 |
| Time: | 17:11:03 | BIC | -4215.110 |
| Sample: | 0 | HQIC | -4256.381 |
| - 875 | |||
| Covariance Type: | opg |
| coef | std err | z | P>|z| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| const | 0.0004 | 0.001 | 0.534 | 0.593 | -0.001 | 0.002 |
| ar.L1 | 0.1985 | 0.709 | 0.280 | 0.780 | -1.191 | 1.588 |
| ar.L2 | -0.8322 | 0.442 | -1.882 | 0.060 | -1.699 | 0.034 |
| ar.L3 | 0.2975 | 0.855 | 0.348 | 0.728 | -1.377 | 1.972 |
| ar.L4 | -0.2060 | 0.325 | -0.635 | 0.526 | -0.842 | 0.430 |
| ar.L5 | -0.1387 | 0.347 | -0.399 | 0.690 | -0.820 | 0.542 |
| ar.L6 | 0.0930 | 0.037 | 2.512 | 0.012 | 0.020 | 0.166 |
| ar.L7 | -0.0734 | 0.068 | -1.075 | 0.282 | -0.207 | 0.060 |
| ma.L1 | -0.2441 | 0.709 | -0.344 | 0.731 | -1.634 | 1.146 |
| ma.L2 | 0.8748 | 0.424 | 2.062 | 0.039 | 0.043 | 1.706 |
| ma.L3 | -0.3215 | 0.870 | -0.370 | 0.712 | -2.026 | 1.383 |
| ma.L4 | 0.2708 | 0.318 | 0.851 | 0.395 | -0.353 | 0.895 |
| ma.L5 | 0.0834 | 0.372 | 0.224 | 0.823 | -0.646 | 0.813 |
| sigma2 | 0.0004 | 1.36e-05 | 31.330 | 0.000 | 0.000 | 0.000 |
Vediamo il comportamento dei residui del modello ARIMA, cercando:
- Stazionarietà (KPSS, ADF)
- Autocorrelazione (Ljung-Box)
- Eteroschedasticità(Breusch-Pagan, White)
KPSS ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.27513424536569653 │ 0.1 │ Accept │ └─────────┴─────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -29.92968714547965 │ 0.0 │ Reject │ └─────────┴────────────────────┴────────┴─────────┘
Ljung-Box ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 5.245167337174701 │ 0.8742103281143567 │ Accept │ └─────────┴───────────────────┴────────────────────┴─────────┘
Breusch-Pagan ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 24.338153488367745 │ 9.676907223507973e-07 │ Reject │ └─────────┴────────────────────┴───────────────────────┴─────────┘
White ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 12.59208126626427 │ 4.0626595216713415e-06 │ Reject │ └─────────┴───────────────────┴────────────────────────┴─────────┘
Notiamo che i residui del modello ARIMA sono stazionari e scorrelati, ma presentano eteroschedasticità: possiamo passare i residui al modello GARCH(1,1) per cercare di rimuovere questa componente.
KPSS ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 0.19959129371118908 │ 0.1 │ Accept │ └─────────┴─────────────────────┴────────┴─────────┘
ADF ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ -28.56531398784409 │ 0.0 │ Reject │ └─────────┴────────────────────┴────────┴─────────┘
Ljung-Box ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 4.265337753763579 │ 0.9345842639932007 │ Accept │ └─────────┴───────────────────┴────────────────────┴─────────┘
Breusch-Pagan ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 3.2869408579080446 │ 0.07017674401227583 │ Accept │ └─────────┴────────────────────┴─────────────────────┴─────────┘
White ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓ ┃ Crypto ┃ StatValue ┃ pValue ┃ Outcome ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩ │ ETH-USD │ 2.4179310888052066 │ 0.08970367360378642 │ Accept │ └─────────┴────────────────────┴─────────────────────┴─────────┘
Passare per un modello GARCH permette di rimuovere l'eteroschedasticità dei residui, quindi la coppia dei modelli si rivela essere un buon mezzo per modellare il comportamento della serie.
<Figure size 1600x500 with 0 Axes>
<Figure size 640x480 with 0 Axes>
Passiamo alla generazione di una banda di predizione con la tecnica di bootstrap. Procediamo nello stesso modo che con il GARCH(1,1) precedente, ma in questo caso i valori stimati dal GARCH sono usati come termine di errore nel modello ARIMA. In particolare abbiamo i seguenti passi
- Fit del modello ARIMA(p,q) sul TrainingSet
- Fit del modello GARCH(1,1) sui residui del modello ARIMA
- Tecnica di Bootstrap:
- Estrazione di TESTING_SET_LEN samples con rimpiazzamento dai residui del modello GARCH
- Generazione di 10000 traiettorie:
- GARCH(1,1)
$\sigma^2_t = \alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2$
$\epsilon_t = \sigma_t W_t$ - ARIMA(p,q)
$X_t = \mu + \sum_{i = 1}^{p} a_i X_{t-i} + \sum_{j = 1}^{q} b_i \epsilon_{t-i} + \epsilon_t$
- GARCH(1,1)
- Estrazione delle traiettorie per le bande di predizione di ampiezza $80\%$
<Figure size 640x480 with 0 Axes>
TestingSet captured by interval - Comparison ┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Crypto ┃ % of Points - Param ┃ % of Points - Non Param ┃ % of Points - ARIMA-GARCH ┃ ┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ ETH-USD │ 91.75257731958763 │ 88.65979381443299 │ 87.62886597938144 │ └─────────┴─────────────────────┴─────────────────────────┴───────────────────────────┘
Come si vede quindi la coppia ARIMA-GARCH non apporta grande beneficio rispetto alle bende ottenuto con un modello GARCH semplice.
8] Conclusioni¶
In conclusione, l'analisi effettuata ha portato a risultati inaspettati. Emerge infatti che, nonostante le differenze intrinseche, il mercato delle criptovalute sembra adattarsi e rispondere in maniera analoga a quello tradizionale.
Uno degli aspetti evidenziati nell'analisi riguarda l'autocorrelazione riscontrata in ETH-USD, fenomeno non esclusivo delle cryptovalute ma presente anche in alcune valute tradizionali. Questo risultato suggerisce che il mercato crypto è permeato da dinamiche che, pur nella loro unicità, non sfuggono completamente alle leggi e alle tendenze del mercato finanziario tradizionale.
L'aspettativa di trovarsi di fronte a un contesto completamente distinto è stata smentita dai risultati, poiché i modelli utilizzati hanno dimostrato di essere altrettanto validi nel contesto delle criptovalute. Il mercato si è dimostrato regolamentato in maniera simile, imponendo alle cryptovalute, con il loro elevato volume di trading, di sottostare alle stesse leggi del mercato tradizionale.
La sorprendente regolarità dell'andamento delle cryptovalute e similarità in termini di mercato alle valute tradizionali, suggerisce l'efficienza del mercato crypto. Nonostante la mancanza di un valore tangibile, il comportamento coerente delle cryptovalute indica che il mercato ha esercitato una forza tale da influenzare e modellare l'andamento di questi asset portandoli a comportarsi in maniera sorprendentemente convenzionale.